package ru.spies.forms;

import javax.servlet.http.Cookie;

import ru.spies.content.SystemContent;
import ru.spies.content.UpdateContent;

public class UpdateForm extends FormCreator {

	private static UpdateForm statThis;
	
	private static final String UPDATE_FORM_FUNC_NAMES_ARRAY[]={
		"Обновить информацию о документах","Обновить информацию о заданиях","Обновить информацию о заданиях агентов",
		"Обновить информацию об агентах", "Обновить информацию об отделах","Обновить информацию о странах",
		"Обновить информацию о типах секретности","Обновить информацию о типах заданий"
	};
	
	private UpdateForm() {
		setCookieName(LastCookies.COOKIE_NAME_FORM_FOR_WORK);
	}
	
	public static UpdateForm getInstance(){
		if (statThis==null){
			statThis = new UpdateForm();
		}
		return statThis;
	}

	@Override
	protected ICookie childCookieWork(Cookie cookie) {
		if (Integer.valueOf(cookie.getValue())==EDBTables.COUNTRY.ordinal()){
			return EDBTables.COUNTRY;
		}
		if (Integer.valueOf(cookie.getValue())==EDBTables.AGENT.ordinal()){
			return EDBTables.AGENT;
		}
		if (Integer.valueOf(cookie.getValue())==EDBTables.DEPARTMENT.ordinal()){
			return EDBTables.DEPARTMENT;
		}	
		if (Integer.valueOf(cookie.getValue())==EDBTables.AGENT_AND_TASK.ordinal()){
			return EDBTables.AGENT_AND_TASK;
		}	
		if (Integer.valueOf(cookie.getValue())==EDBTables.DOCUMENT.ordinal()){
			return EDBTables.DOCUMENT;
		}	
		if (Integer.valueOf(cookie.getValue())==EDBTables.IMPORTANCE.ordinal()){
			return EDBTables.IMPORTANCE;
		}	
		if (Integer.valueOf(cookie.getValue())==EDBTables.TASK.ordinal()){
			return EDBTables.TASK;
		}	
		if (Integer.valueOf(cookie.getValue())==EDBTables.TASK_TYPE.ordinal()){
			return EDBTables.TASK_TYPE;
		}		
		return null;
	}

	@Override
	protected String workWithCookieValue(ICookie cook) {
		EDBTables func = (EDBTables) cook;
		LastCookies.getInstance().setLastTable(func);
		switch (func) {
		case COUNTRY:
			return createUpdateCountryForm();
		case AGENT:
			return createUpdateAgentForm();
		case AGENT_AND_TASK:
			return createUpdateAgentAndTaskForm();
		case DEPARTMENT:
			return createUpdateDepartmentForm();
		case DOCUMENT:
			return createUpdateDocumentForm();
		case IMPORTANCE:
			return createUpdateImportanceForm();
		case TASK:
			return createUpdateTaskForm();
		case TASK_TYPE:
			return createUpdateTaskTypeForm();
		default:
			return createForm(SOME_ERRORS);
		}
	}

	private String createUpdateTaskTypeForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateTaskTypeContent(), SHOW_RESULT_LINK);
	}

	private String createUpdateTaskForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateTaskContent(),SHOW_RESULT_LINK);
	}

	private String createUpdateImportanceForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateImportanceContent(), SHOW_RESULT_LINK);
	}

	private String createUpdateDocumentForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateDocumentContent(),SHOW_RESULT_LINK);
	}

	private String createUpdateDepartmentForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateDepartmentContent(), SHOW_RESULT_LINK);
	}

	private String createUpdateAgentAndTaskForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateAgentAndTaskContent(), SHOW_RESULT_LINK);
	}

	private String createUpdateAgentForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateAgentContent(), SHOW_RESULT_LINK);
	}

	private String createUpdateCountryForm() {
		return createFormWithPostMethod(UpdateContent.getInstance().formUpdateCountryContent(), SHOW_RESULT_LINK);
	}

	@Override
	public String createThisForm() {
		return createForm(SystemContent.getInstance().formForWorkContent(UPDATE_FORM_FUNC_NAMES_ARRAY));
	}

}
